package com.cn.wanxi.util;

public class MyHelp {
    /**
     * 2021-6-3 登录验证和后台部分代码
     * 1.正则表达式
     * 2.自定义验证
     * 3.用例图，流程图，类图
     * 4.根据流程图 取写逻辑
     * 5.根据类图去写代码
     * ---------------------------------------------
     * 前端：
     *      1）页面  展示--提供用户输入信息
     *      2）form表单  得到表单里面的值--传递到后台
     *      3）提交按钮 将数据传递给后台--ajax
     *      4）在success里面写逻辑代码
     *      5）根据传递过来的值（json对象）判断后续动作代码
     * 后台：
     *      1）servlet 页面控制层
     *          1.拿到前端的值
     *          2.将得到的数据封装到一个对象里面
     *          3.调用服务逻辑层
     *          4.得到登录的反馈值
     *          5.将值传递到前端
     *      2）service   服务逻辑层   写逻辑代码
     *      3）BaseService  因为所有的表或者对象都有共同的方法（CRUD)
     *      4)泛型 BaseService<T>
     *      5）BaseModel
     * 明天任务：
     * 1.服务逻辑层
     * 2.dao
     * 3.手写JDBC连接数据库
     * 4.将所有后台代码讲完
     */
    /**
     * 2021-6-4  整个页面逻辑
     * 1.页面
     *      1）输入信息
     *      2）校验
     *      3）ajax
     * 2.servlet
     *      1）得到数据
     *      2）封装数据
     *      3）调用service
     * 3.service
     *      1）调用dao层
     * 4.dao
     *       1）封装sql语句
     *       2）调用jdbc
     * 5.jdbc
     *       1）取得连接
     *       2）得到结果集
     *       3）返回结果ResultSet
     * 6.dao层
     *      3）解析结果，并返回
     * 7.service
     *      2）逻辑判断--返回相应的信息 success或者error
     * 8.servlet
     *      4）得到service的返回数据
     *      5）封装成json对象并返回给页面
     * 9.页面
     *      4）在Ajax里面success的方法里面判断逻辑关系
     *
     *
     * 后台代码编写？
     * 1.servlet
     * 2.service
     * 3.dao
     */
    /**
     * 2021-6-7 表单 查询
     * 1.表单取值
     * 2.查询所有数据
     *      1）查找官方文档--数据表格
     *      2）复制 table
     *      <table id="demo" lay-filter="test"></table>
     *      3）复制 js
     *       table.render({
     *             elem: '#list'
     *             , url: '/back/user/findAll'//对应后台注解地址
     *      4）修改js
     *      5）增加parseData
     *       , parseData: function (res) { //res 即为原始返回的数据
     *                 console.log(res);
     *                 return {
     *                     "code": res.status, //解析接口状态
     *                     "msg": res.message, //解析提示文本
     *                     "count": res.total, //解析数据长度
     *                     "data": res.list //解析数据列表
     *                 };
     *             }
     *       6）在后台增加对象的key值
     *       7）增加总条数
     * 3.分页的做法
     *      1）开启分页
     *        , page: true
     *      2）在后台findAll里面增加获取分页的值的代码
     *       String curPage = req.getParameter("page");//第几页
     *         String pageSize = req.getParameter("limit");//每页显示多少条
     *      3）增加一个pageModel，每一个表都应该有分页
     *      4）修改sql语句，增加分页的代码
     *       limit  (curPage-1)*pageSize,pageSize
     * 模式：
     * html代码   <table class="layui-hide" id="list"></table>
     * servlet    增加分页的赋值
     * service     不用管
     * dao         1）修改sql语句
     *              2）得到总条数
     *              3）封装到list
     *
     *
     */
    /**
     * 2021-6-8 修改，删除
     * 1.templet  模板 （自定义）
     * 2.操作按钮
     * 3.编辑---
     *      1）点击编辑的时候需要传递id到编辑页面，
     *      2）打开编辑页面根据id查询数据库，
     *      3）然后赋值
     *      4）要刷新表单
     * 4.删除    需要重新查询数据
     */
    /**
     * 2021-6-9 模糊查询
     * 1.写html代码
     * 2.监听查询按钮,得到所有的表单数据
     * 3.调用flushTable(data);查询后台数据并显示
     * 4.后台：修改servlet里面的得到数据的代码
     * 5.修改sql语句（拼接sql语句）
     * 6.注意：查询所有和得到总条数的查询条件应该一致
     * ------------------------------
     * find_in_set
     * 注意：如果后端拿到的值为null，需要进行判断,否则，在前端需要传递一个空的json，指里面的值为空，并不是直接{}
     *
     */
    /**
     * 2021-6-10 产品查询
     * 1.html  table
     * 2. table.on//需要将js进行加载
     * 3.创建productModel
     * 4.修改js的表列对于的Java的productModel
     * 5.创建productServlet，代码写上
     * 6.service
     * 7.dao   sql语句和封装list
     * 8.菜系选择 后台逻辑思路和其他查询一样
     *      1）我们需要将查询出来的数据赋值给select下拉菜单
     *      2）字符串拼接
     *      3）表单刷新
     */
    /**
     * 2021-6-11 文件上传
     * 后台代码和前端代码
     * 1）前端代码
     *      1）html页面+css样式
     *      2）form表单拿到数据
     *      3）访问后台+ajax
     * 2）后台代码
     *      1）servlet  页面控制层 唯一和前端打交道   交互
     *           五步------
     *      2）service   服务逻辑层  封装代码
     *      3）dao   数据实现层
     *      4）保存到数据库
     *  ------------------------------------
     *  我们以后拿到一个新的知识点---学习步骤？
     *  1)什么是文件上传？
     *  2）文件上传有什么用？
     *  3）场景？ 文件---第三阶段io流
     *  4）怎么做？
     *  ---------------------------
     *  后台管理系统？xadmin模板？避免自己去写html代码？
     *  基于layui进行设计？
     *  要学会使用工具？https://www.layui.com/demo/upload.html
     *  思路?
     *  1.layui
     *  2.前端—后端
     *  3.html代码？
     *          1）赋值html代码
     *          2)赋值js代码 学会看？
     *          3）访问后台   url
     *  4.后台代码：
     *          思路？
     *          流？---后端的方法？get  post？-
     *          流---文件---保存（地址，输出）
     *          1）创建servlet 类
     *          2)引入包
     *           commons-fileupload-1.3.1.jar
     *           commons-io-2.4.jar
     *          3）写代码
     *                1）得到请求数据  强制转换文件
     *                2）临时文件
     *                3）分析数据类型
     *                4）保存
     *          4）判断是否为空文件？
     *          5）文件保存路径里面可不可以是一样的名字？ uuid+事件秒+文件名？
     *
     *
     *  总结：
     *    1.前端 html+js
     *    2.后台
     *      1.包引入
     *      2.接受流--
     *      3.强制转换文件
     *      4.保存文件
     *      5.返回地址
     *  作业：将你们的项目里面设计到图片上传的
     *  一个完整的项目（session安全认证）
     *  80%
     *
     *
     *
     *
     *
     *
     *
     */
    /**
     * 2021-6-15 文件上传
     * 1.layui 的js
     *    注意的问题：返回的结果，必须是以对象的形式
     * 2.后台：
     *      1.加入第三方jar包
     *      2.赋值代码  文件上传代码
     *          1）设置临时存储文件DiskFileItemFactory
     *          2）文件解析servletupload
     *          3）判断是否是文件流 ServletFileUpload.isMultipartContent(req)
     *          4）设置文件路径 --文件夹路径和文件名称
     *          5）需要将文件赋值到web和out下面，以后 只留web下面的代码
     *     3.返回到页面的格式
     * 3.统一返回前端的格式 ResultModel
     */
    /**
     * 2021-6-16 富文本
     * 1.找到layui   赋值  html代码  textarea
     * 2。赋值js  layedit.build() 两个参数，第一个  id   第二个  是对象{ height，tool }}
     * 3.增加图片上传的路径 layedit.set({
     *                          uploadImage: {
     *      注意：返回的格式必须是json格式
     * 4.复用文件上传的servlet的代码
     * ------------------------------------
     * wangeditor
     * 1.赋值html代码
     * 2.赋值js代码
     * 3.注意：js代码一定放在html代码之后
     * 4.js代码修改三个地方
     *      1.访问后台的servlet地址
     *      2.修改html的id地址
     *      3.修改回显地址  insertImg(res.data.src)
     * 5.赋值wangEditor.min.js
     */
//const E = window.wangEditor;
//const editor = new E('#content');
//// 或者 const editor = new E( document.getElementById('div1') )
//const editUrl = '/upload-img';//服务器访问地址
//    editor.customConfig.menus = [
//            'head',  // 标题
//            'bold',  // 粗体
//            'fontSize',  // 字号
//            'fontName',  // 字体
//            'italic',  // 斜体
//            'underline',  // 下划线
//            'strikeThrough',  // 删除线
//            'foreColor',  // 文字颜色//
//            'backColor',  // 背景颜色
//            'link',  // 插入链接
//            'justify',  // 对齐方式
//            'emoticon',  // 表情
//            'image',  // 插入图片
//            'table',  // 表格
//            'undo',  // 撤销
//            'redo'  // 重复
//            ];
//    editor.customConfig.uploadImgShowBase64 = true;  // 使用 base64 保存图片
//    editor.customConfig.uploadImgServer = editUrl; // 上传图片到服务器
//    editor.customConfig.showLinkImg = false;// 隐藏“网络图片”tab
////配置属性名称，绑定请求的图片数据
////controller会用到，可以随便设置，但是一定要与controller一致
//    editor.customConfig.uploadFileName = 'img';
//    editor.customConfig.withCredentials = true;
//// 将图片大小限制为 5M
//    editor.customConfig.uploadImgMaxSize = 5 * 1024 * 1024;
//    editor.customConfig.uploadImgHooks = {
//        before: function (xhr, editor, files) {
//            // 图片上传之前触发
//            // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象，files 是选择的图片文件
//
//            // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传
//            // return {
//            //     prevent: true,
//            //     msg: '放弃上传'
//            // }
//        },
//        success: function (xhr, editor, result) {
//            // 图片上传并返回结果，图片插入成功之后触发
//            // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象，result 是服务器端返回的结果
//            console.log(result);
//        },
//        fail: function (xhr, editor, result) {
//            // 图片上传并返回结果，但图片插入错误时触发
//            // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象，result 是服务器端返回的结果
//        },
//        error: function (xhr, editor) {
//            // 图片上传出错时触发
//            // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象
//        },
//        timeout: function (xhr, editor) {
//            // 图片上传超时时触发
//            // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象
//        },
//
//        // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式，可使用该配置
//        // （但是，服务器端返回的必须是一个 JSON 格式字符串！！！否则会报错）
//        customInsert: function (insertImg, result, editor) {
//            // 图片上传并返回结果，自定义插入图片的事件（而不是编辑器自动插入图片！！！）
//            // insertImg 是插入图片的函数，editor 是编辑器对象，result 是服务器端返回的结果
//
//            // 举例：假如上传图片成功后，服务器端返回的是 {url:'....'} 这种格式，即可这样插入图片：
//            let url = result.url;
//            insertImg(url)
//            // result 必须是一个 JSON 格式字符串！！！否则报错
//        }
//    };
//
//editor.create();

}
